Computer systems perform a number of different functions. For example, they employ a display monitor to display an image on the face of the display monitor. This image may be formed in part from a graphics image, in part from a video image and in part from a cursor which points to a particular position on the screen. The information for each individual one of these different images may be stored in a memory and may be transferred from the memory by a memory controller to an individual one of a plurality of first-in-first-out registers (FIFO). Each FIFO is constructed and connected to store such data and to transfer such data to apparatus for processing such data and for transferring the processed data at the appropriate times to the display monitor for display on the face of the display monitor. In this way, graphics information can be displayed on the face of the display monitor except for a window in the display monitor and video can be displayed in a window on the face of the display monitor.
The information stored in the memory and read by the memory controller may be for a variety of different purposes. For example, some of such information may relate to different types of commands such as for transferring information and addresses into the memory; other types of such information may relate to information which is to be processed by peripheral equipment (e.g. a printer) other than the display memory; and still other types of information may relate to different types of displays (e.g. graphics and video) in the display monitor such as specified above.
The memory controller has to decide at each instant what priority it should give to the memory with respect to the different types of information to be transferred into and out of the memory. Relatively complex systems have been provided in the past to establish such priorities. Because these systems have been relatively complex, they have been relatively slow.